package com.example.kotlindemo_room

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Ignore
import androidx.room.PrimaryKey

/**
 * 主构造方法里，最好写一个必须要生成的字段，不然表是空的，room是不支持的
 */
@Entity
data class Student(val name: String = "无名氏") {


    @ColumnInfo(name = "age", typeAffinity = ColumnInfo.INTEGER)
    var age: Int = 0

    //    //V2.0
//    @ColumnInfo(name = "sex", typeAffinity = ColumnInfo.INTEGER)
//    var sex: Int = 1
    //V3.0
    @ColumnInfo(name="sex",typeAffinity = ColumnInfo.TEXT)
    var sex: String = "1"

    /**
     * 主键自增长，不需要传值,让其自动生成就好
     */
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id", typeAffinity = ColumnInfo.INTEGER)
    var id: Int = 0

    /**
     * 空构造
     */
    @Ignore
    constructor() : this("无名氏") {
    }
    /**
     * 这个构造主要是为了根据id删除和修改数据库使用的
     * 一般插入操作不使用这个构造
     */
    @Ignore
    constructor(id: Int, name: String, age: Int) : this(name) {
        //次级构造函数
        this.id = id
        this.age = age
    }
    @Ignore
    constructor(name: String, age: Int) : this(name) {
        //次级构造函数
        this.age = age
    }

//    constructor( name: String, age: Int,sex: Int) : this(name) {
//        //次级构造函数
//        this.age = age
//        this.sex = sex
//    }


    override fun toString(): String {
        return "Student(id=$id)(name=$name)(age=$age)(sex=$sex)"
    }


}